package com.wanlian.dao;

import com.wanlian.common.PageCondition;
import com.wanlian.entity.NoticeMsg;
import com.wanlian.entity.User;
import com.wanlian.model.ResultModel;
import com.wanlian.vo.Page;

import java.util.List;
import java.util.Map;


public interface NoticeMsgDao extends GenericDao<NoticeMsg>  {


    /**
     * 指定用户发送消息
     * @param noticeMsg
     * @return
     */
    public ResultModel sendMsgForOne(NoticeMsg noticeMsg);

    /**
     * 群发消息
     * @param noticeMsg
     * @return
     */
    public ResultModel sendMsgForMany(NoticeMsg noticeMsg);

    /**
     * 消息分页展示
     * @param pageCondition
     * @return
     */
    public ResultModel queryNoticeMsgs(PageCondition pageCondition);

    /**
     * 查询用户的未查看的信息条数
     * @param userId
     * @return
     */
    public ResultModel queryCountByUserId(int userId);

    /**
     * 根据userId查询该用户的所有信息（非系统公告）
     * @param userId
     * @return
     */
    public ResultModel queryMsgByUserId(int userId,Page page);


    /**
     *  设置消息已查看
     * @return
     */
    public ResultModel updateHasLook(int noticeMsgId);

    /**
     * 根据phone查询该用户的所有系统公告
     * @param userId
     * @return
     */
    public ResultModel querySystem(int userId,Page page);

    /**
     * 查询用户未查看的公告条数
     * @param userId
     * @return
     */
    public ResultModel queryCountSystem(int userId);

    /**
     * 查看所有系统公告
     * @param pageCondition
     * @return
     */
    public ResultModel queryAllSystem(PageCondition pageCondition);

    /**
     * 通过用户ID查询所有消息
     * 用于标记全部已读
     * @param userId
     * @return
     */
    public List<NoticeMsg> queryAllByUserId(int userId);

    public NoticeMsg queryNewSystemByUserId(int userId);
}
